1. Field of the Invention
The present invention is directed toward the field of memory, and more particularly to a first-in-first-out (FIFO) memory device that includes programmable cell sizes and multiplexing among FIFO memory cores.
2. Art Background
There are many types of memory devices that are used to store data. One type of memory device is known as a first-in-first-out (FIFO) memory or buffer. In a FIFO memory, data is stored in a sequential order as data is written to the device. Typically, FIFO devices maintain a write pointer that specifies the location or address to write the next data entry into the FIFO. For each write operation, the write pointer is incremented. The FIFO memory is sequentially read in the same order as it was written. Typically, to implement a read operation, a read pointer is maintained, and the read pointer is incremented for each subsequent read operation. Thus, the data that is first written to the FIFO device is also the data that is first read from the FIFO device.
FIFO memories have many uses in circuit applications. For example, FIFOs may be used as a queue for storing packets of data in a network device. For the network application, data packets are stored in the FIFO in the sequential order that they are written. For routing or distribution, the data packets are sequentially read starting with the first data packets written.
A specification, known as the universal test and operation physical (PHY) interface for asynchronous transfer mode (ATM) or the UTOPIA specification, defines an interface between the ATM physical media layer and the ATM layer itself. As set forth in the UTOPIA specification, the storage of data in the FIFO device may be arranged in cells. In this configuration, sequential write operations are executed to fill an entire cell with data. Similarly, sequential read operations are executed on a cell to read all data stored in that cell. The UTOPIA specification specifies a cell size of 53 bytes per cell. Although the 53 bytes per cell may be suited for certain applications, other applications, such as different network standards that use different packet sizes, may be suited for different cell sizes. The ability to select the number of bytes per cell provides a more flexible FIFO device that may be suited for more applications. For example, a device may be configured to permit the selection of a wide range of cell sizes. Consequently, it is desirable to develop a FIFO memory that permits a user to specify a cell size by selecting the number of bytes for each cell.